package cn.rxyb.core.respone.enums;


import cn.rxyb.core.respone.IBaseCode;

/**
 * @author YJH
 * @version 1.0
 * @description 响应码操作
 * @date 2020/5/21  11:46
 */
public enum CommonCode implements IBaseCode {

    /********** 0***系统级别的响应码，包括系统异常及微服务之间调用异常 **********/

    SUCCESS("0000", "成功"),//

    PROGRESS("0001", "处理中"),//
    FAILED("0002", "失败"),//
    SYS_BUSI("0003", "系统繁忙"),//
    SYS_ERROR("0004", "系统异常"),//
    SYS_INVALID("0005", "暂不支持该功能"),//
    SYS_NOAUTH("0006", "权限不足"),//
    TOKEN_FIRST("0007", "请先获取TOKEN"),//

    REQ_ERROR("0101", "报文有误"),//
    REQ_EXCEPTION("0102", "报文解析异常"),//

    DB_ERROR("0201", "数据库操作异常"),//
    DB_REPETITION("0202", "数据重复插入"),//
    NO_DATA("0203", "数据不存在"),//
    UPLOAD_ERROR("0204", "文件上传异常"),//

    /********** 1*** 第三方相关响应码 **********/

    THIRD_RSP_EXCEPTION("1001", "请求第三方数据失败"),// 网络等原因
    THIRD_RSP_ERROR("1002", ""),// 请求成功响应结果为失败，描述为第三方信息

    /********** 2及以后为业务响应码，其中2、3、4为系统统一、5及以后各项目自定义 **********/

    SMS_ERROR("2001", "短信发送失败"),//
    SMS_CODE_UNEXIST("2002", "验证码已过期，请重新获取"),//
    SMS_CODE_ERROR("2003", "验证码错误"),//
    SMS_TYPE_ERROR("2004", "未知的短信类型"),//
    SMS_VERIFY_TIMEOUT("2005", "短信验证超时"),//

    LOGIN_NOT("2301", "登录过期或未登录"),//
    LOGIN_ERROR("2302", "用户名或密码错误"),//
    LOGIN_ERROR2("2303", "用户登录凭证不正确"),//
    USER_HAS_EXSIT("2304", "用户已存在"),//
    USER_NOT_EXIST("2305", "用户不存在"),//
    USER_EMAIL_EXSIT("2306", "邮箱已存在"),//
    USER_NAME_EXIST("2307", "用户名已存在"),//
    USER_LOGIN_EXIST("2308", "登录名已存在"),//
    USER_MOBILE_EXIST("2309", "手机号已存在存在"),//
    USER_OPENID_EXIST("2310", "OPENID已存在"),//

    ROLE_HAS_EXSIT("2201", "角色已存在"),//
    ROLE_NOT_EXIST("2202", "角色不存在"),//

    MENU_HAS_EXSIT("2101", "菜单已存在"),//
    MENU_NOT_EXIST("2102", "菜单不存在"),//
    MENU_PARENT_NOT_EXIST("2103", "父菜单不存在"),//

    ;

    private final String code;
    private final String msg;

    CommonCode(final String code, final String msg) {
        this.code = code;
        this.msg = msg;
    }

    public static CommonCode fromCode(String code) {
        CommonCode[] ecs = CommonCode.values();
        for (CommonCode ec : ecs) {
            if (ec.getCode().equals(code)) {
                return ec;
            }
        }
        return SUCCESS;
    }


    /*
     * 错误编码 -1、失败 0、成功
     */
    @Override
    public String getCode() {
        return code;
    }

    /*
     * 错误描述
     */
    @Override
    public String getMsg() {
        return msg;
    }

}
